home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 2 / CU Amiga Magazine's Super CD-ROM 02 (1996)(EMAP Images)(GB)[!][issue 1996-04].iso / magazine / amiga_e / bumpee.e < prev    next >
Text File  |  1995-01-06  |  7KB  |  173 lines

  1. -> preprocess (and use) the version macros (VERSION_INFO and VERSION_STRING)
  2. -> however, these are not used here, so it's left commented
  3. -> OPT PREPROCESS
  4.  
  5. -> implements a full Commodore-Amiga compliant versionstring.
  6. MODULE '*bumpee_rev'
  7.  
  8. MODULE 'dos/dos','dos/rdargs','dos/datetime','intuition/intuition'
  9.  
  10. PROC main()
  11.   DEF readargs:PTR TO rdargs,args:PTR TO LONG,datetime:datetime
  12.   DEF exefile[256]:STRING,donotcompile=FALSE,ecpath[256]:STRING
  13.   DEF bumpfile[256]:STRING,bumpcontents[1024]:STRING,bumpflag=FALSE
  14.   DEF name[256]:STRING,version=1,revision=0,day=0,month=0,year=0,forcebump=FALSE
  15.   DEF datestring[LEN_DATSTRING]:STRING,bumpversion=FALSE,commandstring[256]:STRING
  16.   DEF bumpfh=NIL,exefh=NIL,bumpfib:PTR TO fileinfoblock,exefib:PTR TO fileinfoblock
  17.   DEF sourcefile[256]:STRING,modfile[256]:STRING
  18.  
  19.   GetProgramName(exefile,256)
  20.   IF readargs:=ReadArgs('NAME/A,CREATE=FORCE/S,BUMPVERSION/S,DONOTCOMPILE/S,ECFILEPATH/K',args:=[NIL,FALSE,FALSE,FALSE,'EC'],NIL)
  21.     StrCopy(exefile,args[0])
  22.     forcebump:=args[1]
  23.     bumpversion:=args[2]
  24.     donotcompile:=args[3]
  25.     StrCopy(ecpath,args[4])
  26.     FreeArgs(readargs)
  27.     IF StrCmp(exefile+EstrLen(exefile)-2,'.e',2)
  28.       MidStr(exefile,exefile,0,EstrLen(exefile)-2)
  29.     ENDIF
  30.     StrCopy(sourcefile,exefile)
  31.     StrAdd(sourcefile,'.e')
  32.     StrCopy(modfile,exefile)
  33.     StrAdd(modfile,'.m')
  34.  
  35.     -> print out a copyright notice with actual version information
  36.     PrintF('Bumpee \d.\d © 19\d by Leon Woestenberg\n',VERSION,REVISION,VERSION_YEAR)
  37.     IF FileLength(sourcefile)>0
  38.       StrCopy(bumpfile,exefile)
  39.       StrAdd(bumpfile,'_rev.e')
  40.       datetime.format:=FORMAT_CDN
  41.       datetime.flags:=0
  42.       datetime.strday:=NIL
  43.       datetime.strdate:=datestring
  44.       datetime.strtime:=NIL
  45.       DateStamp(datetime)
  46.       DateToStr(datetime)
  47.       day:=Val(datestring)
  48.       month:=Val(datestring+3)
  49.       year:=Val(datestring+6)
  50.       IF bumpfh:=Open(bumpfile,MODE_OLDFILE)
  51.         IF forcebump
  52.           bumpflag:=TRUE
  53.         ELSE
  54.           IF bumpfib:=AllocDosObject(DOS_FIB,0)
  55.             IF ExamineFH(bumpfh,bumpfib)
  56.               IF exefh:=Open(exefile,MODE_OLDFILE)
  57.                 IF exefib:=AllocDosObject(DOS_FIB,0)
  58.                   IF ExamineFH(exefh,exefib)
  59.                     bumpflag:=(CompareDates(bumpfib+132,exefib+132)>0)
  60.                   ENDIF
  61.                   FreeDosObject(DOS_FIB,exefib)
  62.                 ENDIF
  63.                 Close(exefh)
  64.               ENDIF
  65.             ENDIF
  66.             FreeDosObject(DOS_FIB,bumpfib)
  67.           ENDIF
  68.         ENDIF
  69.         IF bumpflag
  70.           WHILE Fgets(bumpfh,bumpcontents,1023)
  71.             IF InStr(bumpcontents,'BUMP')<>-1
  72.               WHILE Fgets(bumpfh,bumpcontents,1023)
  73.                 EXIT InStr(bumpcontents,'ENDBUMP')<>-1
  74.                 IF InStr(bumpcontents,'NAME=')<>-1
  75.                   MidStr(name,bumpcontents,InStr(bumpcontents,'=')+1)
  76.                   SetStr(name,StrLen(name)-1)
  77.                 ELSEIF InStr(bumpcontents,'VERSION=')<>-1
  78.                   version:=Val(bumpcontents+InStr(bumpcontents,'=')+1)
  79.                 ELSEIF InStr(bumpcontents,'REVISION=')<>-1
  80.                   revision:=Val(bumpcontents+InStr(bumpcontents,'=')+1)
  81.                 ENDIF
  82.               ENDWHILE
  83.             ENDIF
  84.             EXIT StrCmp(bumpcontents,'ENDBUMP')
  85.           ENDWHILE
  86.           IF bumpversion
  87.             version:=version+1
  88.             revision:=0
  89.             PrintF('Bumping version to \d.\d...',version,revision)
  90.           ELSE
  91.             revision:=revision+1
  92.             PrintF('Bumping revision to \d.\d...',version,revision)
  93.           ENDIF
  94.         ELSE
  95.           PrintF('Last revision still uncompiled...No need to bump.\n')
  96.         ENDIF
  97.         Close(bumpfh)
  98.       ELSE
  99.         IF forcebump
  100.           StrCopy(name,FilePart(exefile))
  101.           bumpflag:=TRUE
  102.           PrintF('Creating bump module...')
  103.         ELSE
  104.           PrintF('No bumpfile exists for \a\s\a...Bumpee did nothing.\nSet CREATE switch to create a bumpfile.\n',exefile)
  105.         ENDIF
  106.       ENDIF
  107.       IF bumpflag
  108.         DeleteFile(bumpfile)
  109.         IF FileLength(bumpfile)=TRUE
  110.           IF bumpfh:=Open(bumpfile,MODE_NEWFILE)
  111.             StringF(bumpcontents,'-> Bumpee revision bump module. Do not alter this file manually.\n\n'+
  112.                                  'OPT MODULE\n'+
  113.                                  'OPT EXPORT\n'+
  114.                                  'OPT PREPROCESS\n'+
  115.                                  '\n'+
  116.                                  '/*\n'+
  117.                                  'BUMP\n'+
  118.                                  '  NAME=\s\n'+
  119.                                  '  VERSION=\d\n'+
  120.                                  '  REVISION=\d\n'+
  121.                                  'ENDBUMP\n'+
  122.                                  '*/\n'+
  123.                                  '\n'+
  124.                                  'CONST VERSION=\d\n'+
  125.                                  'CONST REVISION=\d\n'+
  126.                                  '\n'+
  127.                                  'CONST VERSION_DAY=\d\n'+
  128.                                  'CONST VERSION_MONTH=\d\n'+
  129.                                  'CONST VERSION_YEAR=\d\n'+
  130.                                  '\n'+
  131.                                  '#define VERSION_STRING {version_string}\n'+
  132.                                  '#define VERSION_INFO {version_info}\n'+
  133.                                  '\n'+
  134.                                  'PROC dummy() IS NIL\n'+
  135.                                  '\n'+
  136.                                  'version_string:\n'+
  137.                                  'CHAR \a$VER: \a\n'+
  138.                                  'version_info:\n'+
  139.                                  'CHAR \a\s \d.\d (\d.\d.\d)\a,0\n',
  140.                                  name,
  141.                                  version,
  142.                                  revision,
  143.                                  version,
  144.                                  revision,
  145.                                  day,
  146.                                  month,
  147.                                  year,
  148.                                  name,
  149.                                  version,
  150.                                  revision,
  151.                                  day,
  152.                                  month,
  153.                                  year)
  154.             Fputs(bumpfh,bumpcontents)
  155.             Close(bumpfh)
  156.             PrintF('Done.\n')
  157.             IF donotcompile
  158.             ELSE
  159.               StringF(commandstring,'\s \s',ecpath,bumpfile)
  160.               Execute(commandstring,NIL,NIL)
  161.             ENDIF
  162.           ENDIF
  163.         ENDIF
  164.       ENDIF
  165.     ELSE
  166.       PrintF('Sourcefile \a\s\a not found...Bumpee did nothing.\n',sourcefile)
  167.     ENDIF
  168.   ELSE
  169.     PrintFault(IoErr(),exefile)
  170.   ENDIF
  171. ENDPROC
  172.  
  173.